package com.hntx.joymusic.util;

import android.util.Log;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.OutputStream;

public class upLoadUtils {
    private static boolean flag;

    /**
     * 需在在子线程下执行
     * <p>
     * pathname 为：服务器存储地址 ，remote 为：上传到ftp服务器之后，文件的名字 ，path 为：要上传文件的地址
     *
     * @param username
     * @param password
     * @param pathname
     * @param remote
     * @param file
     * @return
     */

    public static boolean uploadfile(String username, String password,
                                     String pathname, String remote, File file, UpdatetListener listener) {
        Log.e("TAG", "loginASDAAAAAAAAAAAAAAAAAA:");
        //服务器域名
        String host = "111.19.171.172";
        int port = 21;
        // String pathname = "E:/ftp"; //上传到服务器之后存放的位置
        // String remote = "9.mp4"; //上传到ftp服务器之后，文件的名字
        long size = file.length();
        InputStream is = null;
        try {
            Log.e("TAG", "11111:");
            is = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //uploadFile(host, port, username, password, pathname, remote,is);
        try {
            //创建FTPClient对象
            FTPClient client = new FTPClient();
            //链接ftp服务
            client.connect(host, port);
            //登录ftp服务器
            boolean login = client.login(username, password);
            // System.out.println("login:" + login);
            Log.e("TAG", "login:" + login);
            //判断pathname是否存在,//切换ftp服务的工作目录
            if (!client.changeWorkingDirectory(pathname)) {
                client.makeDirectory(pathname); //创建工作目录
                client.changeWorkingDirectory(pathname);
            }
            //设置上传的文件类型
            client.setFileType(FTP.BINARY_FILE_TYPE);
            //创建InputStream对象
            //InputStream is=new FileInputStream("F:/2.png");
            //完成文件上传
//            flag = client.storeFile(remote, is);

            int n = -1;
            long trans = 0;
            byte[] buffer = new byte[1024];
            OutputStream outputstream = client.storeFileStream(file.getName());
            while ((n = is.read(buffer)) != -1) {
                outputstream.write(buffer);
                trans += n;
                listener.update(trans, size);
            }
//            flag = client.storeFile(file.getName(), is);
            is.close();
            outputstream.flush();
            outputstream.close();
            client.logout(); //退出
            client.disconnect(); //断开链接
        } catch (Exception ex) {
            ex.printStackTrace();
            Log.d("TAG", "错误是:" + ex.getMessage());
        }
        return flag;
    }


//
//    public static boolean uploadfile(String username, String password,
//                                     String pathname, String remote, String path) {
//        Log.e("TAG", "loginASDAAAAAAAAAAAAAAAAAA:");
//        //服务器域名
//        String host = "124.225.66.55";
//        int port = 21;
//        // String username = "";
//        // String password = "";
//        // String pathname = "E:/ftp"; //上传到服务器之后存放的位置
//        // String remote = "9.mp4"; //上传到ftp服务器之后，文件的名字
//        File file = new File(path);
//        if (!file.exists()) return false;
//        InputStream is = null;
//        try {
//            Log.e("TAG", "11111:");
//            is = new FileInputStream(file);
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        }
//        //uploadFile(host, port, username, password, pathname, remote,is);
//        try {
//            Log.e("TAG", "2222:");
//            //创建FTPClient对象
//            FTPClient client = new FTPClient();
//            Log.e("TAG", "3333:");
//            //链接ftp服务
//            client.connect(host, port);
//            Log.e("TAG", "555:");
//            //登录ftp服务器
//            boolean login = client.login(username, password);
//            // System.out.println("login:" + login);
//            Log.e("TAG", "login:" + login);
//            //判断pathname是否存在,//切换ftp服务的工作目录
//            Log.e("TAG", "666:");
//            if (!client.changeWorkingDirectory(pathname)) {
//                client.makeDirectory(pathname); //创建工作目录
//                client.changeWorkingDirectory(pathname);
//            }
//            //设置上传的文件类型
//            client.setFileType(FTP.BINARY_FILE_TYPE);
//            //创建InputStream对象
//            //InputStream is=new FileInputStream("F:/2.png");
//            //完成文件上传
////            flag = client.storeFile(remote, is);
//
//            flag = client.storeFile(file.getName(), is);
//            Log.e("TAG", "flag:" + flag);
//            client.logout(); //退出
//            client.disconnect(); //断开链接
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            Log.d("TAG", "错误是:" + ex.getMessage());
//        }
//        return flag;
//    }

    public interface UpdatetListener {
        void update(long current, long size);
    }
}


